home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gamers Delight 2
/
Gamers Delight 2.iso
/
Aminet
/
game
/
misc
/
TownMaze.lha
/
TownMaze
/
src.lzh
/
finishalleys.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-08-04
|
2KB
|
63 lines
/*
** finishalleys.c Copyright 1991 Kent Paul Dolan,
** Mountain View, CA, USA 94039-0755
**
** Written to satisfy an inquiry on USENet's rec.games.programmer newsgroup.
** May be freely used or modified in any non-commercial work. Copyrighted
** only to prevent patenting by someone else.
*/
#include <stdio.h>
#include "townmaze.h"
#include "townproto.h"
#ifdef __STDC__
void finishalleys()
#else
int finishalleys()
#endif
{
int i, nhbrid;
int livewalk, targetcell;
#if PROGRESS
if (livect > 0) fprintf(stderr,"Alleys ");
#endif
while(livect > 0)
{
targetcell = RANDOM()%livect;
livewalk = live;
for (i = 0; i < (targetcell - 1); i++)
if (livewalk == NOPOINTER)
{
fprintf(stderr,"live list too short in finishalleys\n");
showdebugmaze();
freespace();
exit(1);
}
else
{
livewalk = statlist[livewalk].next;
}
/*
** Since this is a live cell, it is supposed to have a street cell
** neighbor; find one and adopt its street number. If directions
** are implemented, then this has to be expanded to pick a random
** neighbor street fairly and adopt its number and direction.
** [Done in makestreet(), enabled by the "-1" last parameter.]
*/
for (nhbrid = 0; nhbrid < 4; nhbrid++)
if (nhbrexists(livewalk,nhbrid))
if (statlist[nhbris(livewalk,nhbrid)].status == STREET)
{
makestreet(livewalk,
statlist[nhbris(livewalk,nhbrid)].streetnum,-1);
break;
}
}
/* fprintf(stderr,"\n"); */
return;
}